package pe.gob.pj.sri.dao.imp;

import java.util.Map;

import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import pe.gob.pj.sri.bean.Usuario;
import pe.gob.pj.sri.dao.UsuarioDAO;

@Repository("usuarioDAO")
public class UsuarioDAOImp extends JdbcDaoSupport implements UsuarioDAO {

	public Usuario login(String id, String pass) throws Exception {
		Usuario u = null;
		System.out.println("id: " + id + " pass: " + pass);
		String query = "SELECT * FROM usuario  WHERE idUsuario = ? AND password = ?";
		System.out.println("*1");

		try {
			Map<String, Object> objeto = (Map<String, Object>) getJdbcTemplate()
					.queryForMap(query, id, pass);

			System.out.println("2");
			if (objeto != null) {
				System.out.println("3");
				u = new Usuario();
				u.setApellidoMaterno(objeto.get("apellidoMaterno").toString());
				u.setApellidoPaterno(objeto.get("apellidoPaterno").toString());
				// u.setPassword(objeto.get("password").toString());
				u.setTfijo(objeto.get("tfijo").toString());
				u.setTcelular(objeto.get("tcelular").toString());
				u.setEspecialidad(objeto.get("especialidad").toString());
				u.setDEPARTAMENTO_idDEPARTMENTO(objeto.get(
						"DEPARTAMENTO_codigoDEPARTAMENTO").toString());
				u.setNombre(objeto.get("nombre").toString());
				u.setCargo_codigoCargo(objeto.get("Cargo_codigoCargo")
						.toString());
				System.out.println("4");
			}
		} catch (EmptyResultDataAccessException e) {
			System.out.println("error: EmptyResultDataAccessException");
		}

		return u;
	}

	public void registarUsuario(Usuario u) throws Exception {
		// TODO Auto-generated method stub
		String query = "INSERT INTO usuario (idUsuario, nombre, apellidoPaterno, apellidoMaterno, tipo, "
				+ "password, DEPARTAMENTO_idDEPARTAMENTO)+"
				+ "VALUES (?, ?, ?, ?, ?, ?, ?)";

		getJdbcTemplate().update(
				query,
				new Object[] { u.getIdUsuario(), u.getNombre(),
						u.getApellidoPaterno(), u.getApellidoMaterno(),
						u.getTipo(), u.getPassword(),
						u.getDEPARTAMENTO_idDEPARTMENTO() });

		System.out.println("Se inserto correctamente");
	}
  
	public void eliminarUsuario(Usuario u) throws Exception {
		// TODO Auto-generated method stub
		String query = "DELETE FROM usuario WHERE idUsuario = ?";
		this.getJdbcTemplate().update(query, new Object[] { u.getIdUsuario() });
		System.out.println("Usuario eliminado " + u.getIdUsuario());
	}

	public void actualizarUsuario(Usuario u) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("Actualizar usuario");
	}

	public Usuario obtenerUsuario(String idUsuario) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("ObtenerUsuario");
		return null;
	}

}
